/*
 * author: VDaras
 */

#ifndef _RENDERLAYER_H
#define	_RENDERLAYER_H

#include "Drawable.h"
#include <vector>
#include <string>

/*
 * Class representing a drawing layer, layers are used by the rendering manager
 * in order to achieve rendering priority.
 */

class RenderLayer
{
private:
    std::vector<Drawable *> m_drawables;
    bool m_visible;
    float m_factor; // posa pixels toy this adistoixoyn sto reference layer

public:
    RenderLayer();
    RenderLayer(float distance);
    ~RenderLayer();

    void AddDrawable(Drawable *toAdd);
    void RemoveDrawable(Drawable *toRemove);
    void Render(sdl::GraphicsCore* gCore, Camera *camera = NULL);
    void SetVisibility(bool sVisible);
    bool ContainsDrawable(const Drawable *toTest) const;
    void SortDrawables();
    float GetFactor();
};

#endif	/* _RENDERLAYER_H */

